home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
BASIC
/
0006.ZIP
/
COSCAN.ASM
< prev
next >
Wrap
Assembly Source File
|
1983-06-15
|
1KB
|
69 lines
TITLE COSCAN - Diskette Contents List - Scan Directory
SUBTTL Version 1.0 - June 1983
PAGE 81,132
;
CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE,DS:CODE
;
EXTRN PNTR:WORD,SRCE:BYTE
;
NORM DB 0,'???????????' ;Dummy FCB for "find/next"
DB 24 DUP (?)
;
PUBLIC SCAN
SCAN PROC NEAR
MOV DI,OFFSET PNTR
XOR AX,AX
MOV CX,120
REP STOSW ;Clear pointer table
MOV BX,OFFSET PNTR ;BX points to start of pointer list
MOV DI,OFFSET SRCE ;DI points to start of entry stack
XOR CX,CX
MOV DX,OFFSET NORM
MOV AH,11H
INT 21H ;Get first search entry
JMP SHORT INNER
LOOP: MOV DX,OFFSET NORM
MOV AH,12H
INT 21H ;Get next entry
INNER: OR AL,AL
JNZ DONE
CALL SAVE ;Stack entry
INC CX ;Count entry
JMP LOOP
DONE: RET ;Returns count in CX
SCAN ENDP
;
SAVE PROC NEAR
PUSH CX
MOV WORD PTR [BX],DI ;Save pointer to start of entry
ADD BX,2 ; and step pointer table reg
MOV SI,81H ;Point to DTA - file name
MOV CX,8
SVLP: MOV AL,BYTE PTR [SI]
CMP AL,' '
JZ NMDNE ;End of name
MOV BYTE PTR [DI],AL
INC SI
INC DI
LOOP SVLP
NMDNE: MOV SI,89H ;Point to DTA type field
CMP BYTE PTR [SI],' '
JZ ALLDNE ;No file type
MOV BYTE PTR [DI],'.'
INC DI
MOV CX,3
REP MOVSB ;Move type field to stack
ALLDNE: MOV BYTE PTR [DI],0 ;Mark end of string
INC DI
MOV SI,9DH ;Point to size of file
MOV CX,4
REP MOVSB ; and save in stack
POP CX
RET
SAVE ENDP
;
CODE ENDS
;
END